package com.example.mifi;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Point;
import android.graphics.PointF;
import android.net.wifi.ScanResult;
import android.os.Build;
import android.util.AttributeSet;
import android.util.Log;
import android.view.Display;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;


public class MapView extends View 
{
	private Context mContext;
	
	private Bitmap mMap1;
	private Bitmap mUndetailedMap1;
	
	private boolean mMouse;
	private boolean mShowRadius;

	private Paint mMapPaint;
	private Paint mCirclePaint;

	private Geopoint mCurrent;
	private long mDistance;
	private PointF mHalf;
	private Point mScreenSize;
	private Point mMoveOffset;
	
	private float mScale = 1.0f;
	
	private ArrayList<Geopoint> mPoints;
    
	public MapView(Context context) 
	{
		super(context);
		init(context);
	}

	public MapView(Context context, AttributeSet attrs)
    {
        super(context, attrs);
        init(context);
    }
	
    public MapView(Context context, AttributeSet attrs, int defStyle) 
    {
        super(context, attrs, defStyle);
        init(context);
    }
    
    private void init(Context context)
	{
		mContext = context;
		mMap1 = BitmapFactory.decodeResource(mContext.getResources(),
                R.drawable.gray1);
		mUndetailedMap1 = Bitmap.createScaledBitmap(mMap1, mMap1.getWidth()/10, mMap1.getHeight()/10, true);
				
		mMapPaint = new Paint();
		mMapPaint.setAntiAlias(true);
		mMapPaint.setFilterBitmap(true);
		mMapPaint.setDither(true);
		mMapPaint.setTextSize(25);
		mMapPaint.setColor(Color.RED);
		
		
		mCirclePaint = new Paint();
		mCirclePaint.setAntiAlias(true);
		mCirclePaint.setFilterBitmap(true);
		mCirclePaint.setDither(true);
		
		mShowRadius = true;
		mMouse = false;
		
		mScreenSize = new Point();
		mMoveOffset = new Point();
		mHalf = new PointF(mMap1.getWidth() / 2, mMap1.getHeight() / 2);
		
		initPoints();
	} 
    
	private void initPoints()
	{
		mPoints = new ArrayList<Geopoint>();
		/*Random rand = new Random();
		for (int i = 0; i < 10; i++)
			mPoints.add(new Geopoint(rand.nextFloat(), rand.nextFloat()));*/
		Geopoint p;
		float x, y;
		float w = 1280, h = 956;
		/*x = 590.0f / w;
		y = 590.0f / h;
		Geopoint p = new Geopoint(x, y);
		p.addValue("3c:e5:a6:9c:e6:f1", 83);
		p.addValue("3c:e5:a6:9c:e6:f0", 82);
		p.addValue("3c:e5:a6:9b:ab:30", 0);
		p.addValue("3c:e5:a6:9b:ab:31", 0);
		p.addValue("3c:e5:a6:9d:01:10", 56);
		p.addValue("3c:e5:a6:9d:01:11", 54);
		p.addValue("38:22:d6:8d:40:d1", 0);
		p.addValue("3c:e5:a6:9b:91:31", 0);
		p.addValue("3c:e5:a6:9b:82:90", 0);
		p.addValue("3c:e5:a6:9d:00:f0", 0);
		p.addValue("3c:e5:a6:9d:00:f1", 0);
		p.addValue("3c:e5:a6:9b:a8:f1", 0);
		p.addValue("3c:e5:a6:9b:82:91", 0);
		p.addValue("00:0b:6b:3e:5b:b9", 74);
		p.addValue("00:22:33:f4:6e:69", 92);
		p.addValue("38:22:d6:8d:40:d0", 0);
		p.addValue("3c:e5:a6:9b:91:30", 88);
		p.addValue("24:db:ac:59:49:9a", 84);
		p.addValue("3c:e5:a6:9b:65:11", 85);
		p.addValue("3c:e5:a6:9b:65:10", 88);
		mPoints.add(p);
		x = 590.0f / w;
		y = 475.0f / h;
		p = new Geopoint(x, y);
		p.addValue("3c:e5:a6:9c:e6:f1", 85);
		p.addValue("3c:e5:a6:9c:e6:f0", 82);
		p.addValue("3c:e5:a6:9b:ab:30", 0);
		p.addValue("3c:e5:a6:9b:ab:31", 0);
		p.addValue("3c:e5:a6:9d:01:10", 56);
		p.addValue("3c:e5:a6:9d:01:11", 52);
		p.addValue("38:22:d6:8d:40:d1", 89);
		p.addValue("3c:e5:a6:9b:91:31", 87);
		p.addValue("3c:e5:a6:9b:82:90", 0);
		p.addValue("3c:e5:a6:9d:00:f0", 0);
		p.addValue("3c:e5:a6:9d:00:f1", 0);
		p.addValue("3c:e5:a6:9b:a8:f1", 83);
		p.addValue("3c:e5:a6:9b:82:91", 82);
		p.addValue("00:0b:6b:3e:5b:b9", 75);
		p.addValue("00:22:33:f4:6e:69", 92);
		p.addValue("38:22:d6:8d:40:d0", 89);
		p.addValue("3c:e5:a6:9b:91:30", 88);
		p.addValue("24:db:ac:59:49:9a", 84);
		p.addValue("3c:e5:a6:9b:65:11", 82);
		p.addValue("3c:e5:a6:9b:65:10", 88);
		mPoints.add(p);
		x = 590.0f / w;
		y = 385.0f / h;
		p = new Geopoint(x, y);
		p.addValue("3c:e5:a6:9c:e6:f1", 85);
		p.addValue("3c:e5:a6:9c:e6:f0", 82);
		p.addValue("3c:e5:a6:9b:ab:30", 0);
		p.addValue("3c:e5:a6:9b:ab:31", 0);
		p.addValue("3c:e5:a6:9d:01:10", 74);
		p.addValue("3c:e5:a6:9d:01:11", 74);
		p.addValue("38:22:d6:8d:40:d1", 78);
		p.addValue("3c:e5:a6:9b:91:31", 87);
		p.addValue("3c:e5:a6:9b:82:90", 87);
		p.addValue("3c:e5:a6:9d:00:f0", 83);
		p.addValue("3c:e5:a6:9d:00:f1", 84);
		p.addValue("3c:e5:a6:9b:a8:f1", 77);
		p.addValue("3c:e5:a6:9b:82:91", 86);
		p.addValue("00:0b:6b:3e:5b:b9", 75);
		p.addValue("00:22:33:f4:6e:69", 0);
		p.addValue("38:22:d6:8d:40:d0", 78);
		p.addValue("3c:e5:a6:9b:91:30", 0);
		p.addValue("24:db:ac:59:49:9a", 84);
		p.addValue("3c:e5:a6:9b:65:11", 82);
		p.addValue("3c:e5:a6:9b:65:10", 88);
		mPoints.add(p);
		x = 490.0f / w;
		y = 605.0f / h;
		p = new Geopoint(x, y);
		p.addValue("3c:e5:a6:9c:e6:f1", 63);
		p.addValue("3c:e5:a6:9c:e6:f0", 64);
		p.addValue("3c:e5:a6:9b:ab:30", 0);
		p.addValue("3c:e5:a6:9b:ab:31", 82);
		p.addValue("3c:e5:a6:9d:01:10", 73);
		p.addValue("3c:e5:a6:9d:01:11", 73);
		p.addValue("38:22:d6:8d:40:d1", 78);
		p.addValue("3c:e5:a6:9b:91:31", 87);
		p.addValue("3c:e5:a6:9b:82:90", 85);
		p.addValue("3c:e5:a6:9d:00:f0", 83);
		p.addValue("3c:e5:a6:9d:00:f1", 84);
		p.addValue("3c:e5:a6:9b:a8:f1", 77);
		p.addValue("3c:e5:a6:9b:82:91", 90);
		p.addValue("00:0b:6b:3e:5b:b9", 75);
		p.addValue("00:22:33:f4:6e:69", 0);
		p.addValue("38:22:d6:8d:40:d0", 78);
		p.addValue("3c:e5:a6:9b:91:30", 0);
		p.addValue("24:db:ac:59:49:9a", 84);
		p.addValue("3c:e5:a6:9b:65:11", 82);
		p.addValue("3c:e5:a6:9b:65:10", 0);
		mPoints.add(p);
		x = 490.0f / w;
		y = 480.0f / h;
		p = new Geopoint(x, y);
		p.addValue("3c:e5:a6:9c:e6:f1", 71);
		p.addValue("3c:e5:a6:9c:e6:f0", 64);
		p.addValue("3c:e5:a6:9b:ab:30", 0);
		p.addValue("3c:e5:a6:9b:ab:31", 84);
		p.addValue("3c:e5:a6:9d:01:10", 56);
		p.addValue("3c:e5:a6:9d:01:11", 52);
		p.addValue("38:22:d6:8d:40:d1", 78);
		p.addValue("3c:e5:a6:9b:91:31", 85);
		p.addValue("3c:e5:a6:9b:82:90", 84);
		p.addValue("3c:e5:a6:9d:00:f0", 83);
		p.addValue("3c:e5:a6:9d:00:f1", 84);
		p.addValue("3c:e5:a6:9b:a8:f1", 80);
		p.addValue("3c:e5:a6:9b:82:91", 85);
		p.addValue("00:0b:6b:3e:5b:b9", 86);
		p.addValue("00:22:33:f4:6e:69", 0);
		p.addValue("38:22:d6:8d:40:d0", 78);
		p.addValue("3c:e5:a6:9b:91:30", 0);
		p.addValue("24:db:ac:59:49:9a", 86);
		p.addValue("3c:e5:a6:9b:65:11", 0);
		p.addValue("3c:e5:a6:9b:65:10", 0);
		mPoints.add(p);
		x = 490.0f / w;
		y = 415.0f / h;
		p = new Geopoint(x, y);
		p.addValue("3c:e5:a6:9c:e6:f1", 84);
		p.addValue("3c:e5:a6:9c:e6:f0", 83);
		p.addValue("3c:e5:a6:9b:ab:30", 0);
		p.addValue("3c:e5:a6:9b:ab:31", 84);
		p.addValue("3c:e5:a6:9d:01:10", 62);
		p.addValue("3c:e5:a6:9d:01:11", 54);
		p.addValue("38:22:d6:8d:40:d1", 0);
		p.addValue("3c:e5:a6:9b:91:31", 85);
		p.addValue("3c:e5:a6:9b:82:90", 76);
		p.addValue("3c:e5:a6:9d:00:f0", 0);
		p.addValue("3c:e5:a6:9d:00:f1", 0);
		p.addValue("3c:e5:a6:9b:a8:f1", 80);
		p.addValue("3c:e5:a6:9b:82:91", 77);
		p.addValue("00:0b:6b:3e:5b:b9", 87);
		p.addValue("00:22:33:f4:6e:69", 0);
		p.addValue("38:22:d6:8d:40:d0", 0);
		p.addValue("3c:e5:a6:9b:91:30", 0);
		p.addValue("24:db:ac:59:49:9a", 95);
		p.addValue("3c:e5:a6:9b:65:11", 82);
		p.addValue("3c:e5:a6:9b:65:10", 81);
		mPoints.add(p);
		x = 340.0f / w;
		y = 480.0f / h;
		p = new Geopoint(x, y);
		p.addValue("3c:e5:a6:9c:e6:f1", 73);
		p.addValue("3c:e5:a6:9c:e6:f0", 73);
		p.addValue("3c:e5:a6:9b:ab:30", 0);
		p.addValue("3c:e5:a6:9b:ab:31", 84);
		p.addValue("3c:e5:a6:9d:01:10", 69);
		p.addValue("3c:e5:a6:9d:01:11", 69);
		p.addValue("38:22:d6:8d:40:d1", 0);
		p.addValue("3c:e5:a6:9b:91:31", 84);
		p.addValue("3c:e5:a6:9b:82:90", 75);
		p.addValue("3c:e5:a6:9d:00:f0", 0);
		p.addValue("3c:e5:a6:9d:00:f1", 0);
		p.addValue("3c:e5:a6:9b:a8:f1", 82);
		p.addValue("3c:e5:a6:9b:82:91", 73);
		p.addValue("00:0b:6b:3e:5b:b9", 90);
		p.addValue("00:22:33:f4:6e:69", 0);
		p.addValue("38:22:d6:8d:40:d0", 0);
		p.addValue("3c:e5:a6:9b:91:30", 0);
		p.addValue("24:db:ac:59:49:9a", 95);
		p.addValue("3c:e5:a6:9b:65:11", 71);
		p.addValue("3c:e5:a6:9b:65:10", 81);
		mPoints.add(p);
		x = 220.0f / w;
		y = 480.0f / h;
		p = new Geopoint(x, y);
		p.addValue("3c:e5:a6:9c:e6:f1", 69);
		p.addValue("3c:e5:a6:9c:e6:f0", 69);
		p.addValue("3c:e5:a6:9b:ab:30", 79);
		p.addValue("3c:e5:a6:9b:ab:31", 77);
		p.addValue("3c:e5:a6:9d:01:10", 73);
		p.addValue("3c:e5:a6:9d:01:11", 72);
		p.addValue("38:22:d6:8d:40:d1", 0);
		p.addValue("3c:e5:a6:9b:91:31", 72);
		p.addValue("3c:e5:a6:9b:82:90", 75);
		p.addValue("3c:e5:a6:9d:00:f0", 0);
		p.addValue("3c:e5:a6:9d:00:f1", 0);
		p.addValue("3c:e5:a6:9b:a8:f1", 82);
		p.addValue("3c:e5:a6:9b:82:91", 76);
		p.addValue("00:0b:6b:3e:5b:b9", 83);
		p.addValue("00:22:33:f4:6e:69", 0);
		p.addValue("38:22:d6:8d:40:d0", 0);
		p.addValue("3c:e5:a6:9b:91:30", 0);
		p.addValue("24:db:ac:59:49:9a", 90);
		p.addValue("3c:e5:a6:9b:65:11", 71);
		p.addValue("3c:e5:a6:9b:65:10", 81);
		mPoints.add(p);
		x = 707.0f / w;
		y = 480.0f / h;
		p = new Geopoint(x, y);
		p.addValue("3c:e5:a6:9c:e6:f1", 69);
		p.addValue("3c:e5:a6:9c:e6:f0", 69);
		p.addValue("3c:e5:a6:9b:ab:30", 79);
		p.addValue("3c:e5:a6:9b:ab:31", 77);
		p.addValue("3c:e5:a6:9d:01:10", 73);
		p.addValue("3c:e5:a6:9d:01:11", 76);
		p.addValue("38:22:d6:8d:40:d1", 0);
		p.addValue("3c:e5:a6:9b:91:31", 72);
		p.addValue("3c:e5:a6:9b:82:90", 90);
		p.addValue("3c:e5:a6:9d:00:f0", 0);
		p.addValue("3c:e5:a6:9d:00:f1", 0);
		p.addValue("3c:e5:a6:9b:a8:f1", 82);
		p.addValue("3c:e5:a6:9b:82:91", 76);
		p.addValue("00:0b:6b:3e:5b:b9", 67);
		p.addValue("00:22:33:f4:6e:69", 0);
		p.addValue("38:22:d6:8d:40:d0", 0);
		p.addValue("3c:e5:a6:9b:91:30", 0);
		p.addValue("24:db:ac:59:49:9a", 70);
		p.addValue("3c:e5:a6:9b:65:11", 71);
		p.addValue("3c:e5:a6:9b:65:10", 0);
		mPoints.add(p);
		x = 832.0f / w;
		y = 480.0f / h;
		p = new Geopoint(x, y);
		p.addValue("3c:e5:a6:9c:e6:f1", 69);
		p.addValue("3c:e5:a6:9c:e6:f0", 69);
		p.addValue("3c:e5:a6:9b:ab:30", 79);
		p.addValue("3c:e5:a6:9b:ab:31", 77);
		p.addValue("3c:e5:a6:9d:01:10", 78);
		p.addValue("3c:e5:a6:9d:01:11", 78);
		p.addValue("38:22:d6:8d:40:d1", 0);
		p.addValue("3c:e5:a6:9b:91:31", 72);
		p.addValue("3c:e5:a6:9b:82:90", 90);
		p.addValue("3c:e5:a6:9d:00:f0", 87);
		p.addValue("3c:e5:a6:9d:00:f1", 86);
		p.addValue("3c:e5:a6:9b:a8:f1", 0);
		p.addValue("3c:e5:a6:9b:82:91", 76);
		p.addValue("00:0b:6b:3e:5b:b9", 60);
		p.addValue("00:22:33:f4:6e:69", 0);
		p.addValue("38:22:d6:8d:40:d0", 0);
		p.addValue("3c:e5:a6:9b:91:30", 0);
		p.addValue("24:db:ac:59:49:9a", 81);
		p.addValue("3c:e5:a6:9b:65:11", 0);
		p.addValue("3c:e5:a6:9b:65:10", 0);
		mPoints.add(p);
		x = 920.0f / w;
		y = 500.0f / h;
		p = new Geopoint(x, y);
		p.addValue("3c:e5:a6:9c:e6:f1", 0);
		p.addValue("3c:e5:a6:9c:e6:f0", 0);
		p.addValue("3c:e5:a6:9b:ab:30", 0);
		p.addValue("3c:e5:a6:9b:ab:31", 0);
		p.addValue("3c:e5:a6:9d:01:10", 78);
		p.addValue("3c:e5:a6:9d:01:11", 80);
		p.addValue("38:22:d6:8d:40:d1", 0);
		p.addValue("3c:e5:a6:9b:91:31", 0);
		p.addValue("3c:e5:a6:9b:82:90", 90);
		p.addValue("3c:e5:a6:9d:00:f0", 79);
		p.addValue("3c:e5:a6:9d:00:f1", 79);
		p.addValue("3c:e5:a6:9b:a8:f1", 0);
		p.addValue("3c:e5:a6:9b:82:91", 0);
		p.addValue("00:0b:6b:3e:5b:b9", 74);
		p.addValue("00:22:33:f4:6e:69", 0);
		p.addValue("38:22:d6:8d:40:d0", 0);
		p.addValue("3c:e5:a6:9b:91:30", 0);
		p.addValue("24:db:ac:59:49:9a", 95);
		p.addValue("3c:e5:a6:9b:65:11", 0);
		p.addValue("3c:e5:a6:9b:65:10", 0);
		mPoints.add(p);
		x = 990.0f / w;
		y = 500.0f / h;
		p.addValue("3c:e5:a6:9c:e6:f1", 0);
		p.addValue("3c:e5:a6:9c:e6:f0", 0);
		p.addValue("3c:e5:a6:9b:ab:30", 0);
		p.addValue("3c:e5:a6:9b:ab:31", 0);
		p.addValue("3c:e5:a6:9d:01:10", 83);
		p.addValue("3c:e5:a6:9d:01:11", 81);
		p.addValue("38:22:d6:8d:40:d1", 0);
		p.addValue("3c:e5:a6:9b:91:31", 0);
		p.addValue("3c:e5:a6:9b:82:90", 0);
		p.addValue("3c:e5:a6:9d:00:f0", 83);
		p.addValue("3c:e5:a6:9d:00:f1", 82);
		p.addValue("3c:e5:a6:9b:a8:f1", 0);
		p.addValue("3c:e5:a6:9b:82:91", 0);
		p.addValue("00:0b:6b:3e:5b:b9", 84);
		p.addValue("00:22:33:f4:6e:69", 0);
		p.addValue("38:22:d6:8d:40:d0", 0);
		p.addValue("3c:e5:a6:9b:91:30", 0);
		p.addValue("24:db:ac:59:49:9a", 91);
		p.addValue("3c:e5:a6:9b:65:11", 0);
		p.addValue("3c:e5:a6:9b:65:10", 0);
		mPoints.add(p);*/
		x = 920.0f / w;
		y = 480.0f / h;
		p = new Geopoint(x, y);
		p.addValue("3c:e5:a6:9c:e6:f1", 82); //
		p.addValue("3c:e5:a6:9c:e6:f0", 0); 
		p.addValue("3c:e5:a6:9b:ab:30", 0); 
		p.addValue("3c:e5:a6:9b:ab:31", 87);  //
		p.addPossibleValue("3c:e5:a6:9d:01:10", 85);
		p.addValue("3c:e5:a6:9d:01:11", 81); //
		p.addValue("38:22:d6:8d:40:d1", 0);
		p.addPossibleValue("3c:e5:a6:9b:a8:f0", 82);
		p.addValue("3c:e5:a6:9b:91:31", 82); //
		p.addPossibleValue("3c:e5:a6:9b:82:90", 95);
		p.addPossibleValue("3c:e5:a6:9d:00:f0", 78); //pakeiciau
		p.addValue("3c:e5:a6:9d:00:f1", 82); //
		p.addValue("3c:e5:a6:9b:a8:f1", 82); //
		p.addValue("3c:e5:a6:9b:82:91", 83); //
		p.addValue("00:0b:6b:3e:5b:b9", 71); //
		p.addValue("38:22:d6:8d:40:d0", 0);
		p.addPossibleValue("3c:e5:a6:9b:91:30", 87);
		p.addPossibleValue("24:db:ac:59:49:9a", 84);
		p.addValue("3c:e5:a6:9b:65:11", 84); //
		p.addValue("3c:e5:a6:9b:65:10", 0);
		mPoints.add(p);
		
		x = 710.0f / w;
		y = 480.0f / h;
		p = new Geopoint(x, y);
		p.addValue("3c:e5:a6:9c:e6:f1", 82); //
		p.addValue("3c:e5:a6:9c:e6:f0", 0);
		p.addValue("3c:e5:a6:9b:ab:30", 0);
		p.addValue("3c:e5:a6:9b:ab:31", 87); //
		p.addPossibleValue("3c:e5:a6:9d:01:10", 80);
		p.addValue("3c:e5:a6:9d:01:11", 75); //
		p.addValue("38:22:d6:8d:40:d1", 0);
		p.addValue("3c:e5:a6:9b:a8:f0", 0);
		p.addValue("3c:e5:a6:9b:91:31", 82); //
		p.addPossibleValue("3c:e5:a6:9b:82:90", 94);
		p.addPossibleValue("3c:e5:a6:9d:00:f0", 76);
		p.addValue("3c:e5:a6:9d:00:f1", 0); //
		p.addValue("3c:e5:a6:9b:a8:f1", 82); //
		p.addValue("3c:e5:a6:9b:82:91", 83); //
		p.addValue("00:0b:6b:3e:5b:b9", 70); //
		p.addValue("38:22:d6:8d:40:d0", 0);
		p.addPossibleValue("3c:e5:a6:9b:91:30", 94);
		p.addPossibleValue("24:db:ac:59:49:9a", 82);
		p.addValue("3c:e5:a6:9b:65:11", 85); //
		p.addValue("3c:e5:a6:9b:65:10", 0);
		mPoints.add(p);
		
		x = 590.0f / w;
		y = 470.0f / h;
		p = new Geopoint(x, y);
		p.addValue("3c:e5:a6:9c:e6:f1", 75); //
		p.addPossibleValue("3c:e5:a6:9c:e6:f0", 0);
		p.addValue("3c:e5:a6:9b:ab:30", 0);
		p.addValue("3c:e5:a6:9b:ab:31", 80); //
		p.addPossibleValue("3c:e5:a6:9d:01:10", 50);
		p.addValue("3c:e5:a6:9d:01:11", 54); //
		p.addPossibleValue("38:22:d6:8d:40:d1", 93);
		p.addValue("3c:e5:a6:9b:a8:f0", 0);
		p.addValue("3c:e5:a6:9b:91:31", 87); //
		p.addPossibleValue("3c:e5:a6:9b:82:90", 84);
		p.addValue("3c:e5:a6:9d:00:f0", 0);
		p.addPossibleValue("3c:e5:a6:9d:00:f1", 92);
		p.addValue("3c:e5:a6:9b:a8:f1", 78); //
		p.addValue("3c:e5:a6:9b:82:91", 80); //
		p.addValue("00:0b:6b:3e:5b:b9", 80); //
		p.addValue("38:22:d6:8d:40:d0", 0);
		p.addPossibleValue("3c:e5:a6:9b:91:30", 94);
		p.addPossibleValue("24:db:ac:59:49:9a", 84);
		p.addValue("3c:e5:a6:9b:65:11", 82); //
		p.addPossibleValue("3c:e5:a6:9b:65:10", 77);
		mPoints.add(p);
		
		x = 590.0f / w;
		y = 590.0f / h;
		p = new Geopoint(x, y);
		p.addValue("3c:e5:a6:9c:e6:f1", 87); //
		p.addPossibleValue("3c:e5:a6:9c:e6:f0", 75);
		p.addValue("3c:e5:a6:9b:ab:30", 0);
		p.addValue("3c:e5:a6:9b:ab:31", 85); //
		p.addPossibleValue("3c:e5:a6:9d:01:10", 50);
		p.addValue("3c:e5:a6:9d:01:11", 55); //
		p.addPossibleValue("38:22:d6:8d:40:d1", 92);
		p.addPossibleValue("3c:e5:a6:9b:a8:f0", 85);
		p.addValue("3c:e5:a6:9b:91:31", 87); //
		p.addPossibleValue("3c:e5:a6:9b:82:90", 88);
		p.addPossibleValue("3c:e5:a6:9d:00:f0", 0);
		p.addValue("3c:e5:a6:9d:00:f1", 0); //
		p.addValue("3c:e5:a6:9b:a8:f1", 87); //
		p.addValue("3c:e5:a6:9b:82:91", 82); //
		p.addValue("00:0b:6b:3e:5b:b9", 71); //
		p.addPossibleValue("38:22:d6:8d:40:d0", 93);
		p.addPossibleValue("3c:e5:a6:9b:91:30", 93);
		p.addPossibleValue("24:db:ac:59:49:9a", 80);
		p.addValue("3c:e5:a6:9b:65:11", 84); //
		p.addPossibleValue("3c:e5:a6:9b:65:10", 79);
		mPoints.add(p);
		
		x = 390.0f / w;
		y = 480.0f / h;
		p = new Geopoint(x, y);
		p.addValue("3c:e5:a6:9c:e6:f1", 73); //
		p.addPossibleValue("3c:e5:a6:9c:e6:f0", 70);
		p.addValue("3c:e5:a6:9b:ab:30", 0);
		p.addValue("3c:e5:a6:9b:ab:31", 86); //
		p.addPossibleValue("3c:e5:a6:9d:01:10", 69);
		p.addValue("3c:e5:a6:9d:01:11", 60); //
		p.addPossibleValue("38:22:d6:8d:40:d1", 90);
		p.addPossibleValue("3c:e5:a6:9b:a8:f0", 81);
		p.addValue("3c:e5:a6:9b:91:31", 84); //
		p.addPossibleValue("3c:e5:a6:9b:82:90", 80);
		p.addValue("3c:e5:a6:9d:00:f0", 0);
		p.addPossibleValue("3c:e5:a6:9d:00:f1", 85);
		p.addValue("3c:e5:a6:9b:a8:f1", 80); //
		p.addValue("3c:e5:a6:9b:82:91", 78); //
		p.addValue("00:0b:6b:3e:5b:b9", 78); //
		p.addPossibleValue("38:22:d6:8d:40:d0", 93);
		p.addPossibleValue("3c:e5:a6:9b:91:30", 77);
		p.addPossibleValue("24:db:ac:59:49:9a", 76);
		p.addValue("3c:e5:a6:9b:65:11", 76); //
		p.addPossibleValue("3c:e5:a6:9b:65:10", 78);
		mPoints.add(p);
		
		x = 250.0f / w;
		y = 480.0f / h;
		p = new Geopoint(x, y);
		p.addValue("3c:e5:a6:9c:e6:f1", 68); //
		p.addPossibleValue("3c:e5:a6:9c:e6:f0", 70);
		p.addPossibleValue("3c:e5:a6:9b:ab:30", 75);
		p.addValue("3c:e5:a6:9b:ab:31", 75); //
		p.addPossibleValue("3c:e5:a6:9d:01:10", 75);
		p.addValue("3c:e5:a6:9d:01:11", 68); //
		p.addValue("38:22:d6:8d:40:d1", 0);
		p.addValue("3c:e5:a6:9b:a8:f0", 0);
		p.addValue("3c:e5:a6:9b:91:31", 68);//
		p.addPossibleValue("3c:e5:a6:9b:82:90", 81);
		p.addValue("3c:e5:a6:9d:00:f0", 0);
		p.addPossibleValue("3c:e5:a6:9d:00:f1", 79);
		p.addValue("3c:e5:a6:9b:a8:f1", 73); // 
		p.addValue("3c:e5:a6:9b:82:91", 82); //
		p.addValue("00:0b:6b:3e:5b:b9", 85); //
		p.addPossibleValue("38:22:d6:8d:40:d0", 0);
		p.addPossibleValue("3c:e5:a6:9b:91:30", 70);
		p.addPossibleValue("24:db:ac:59:49:9a", 86);
		p.addValue("3c:e5:a6:9b:65:11", 75); //
		p.addPossibleValue("3c:e5:a6:9b:65:10", 76);
		mPoints.add(p);
	}

	@Override
	protected void onDraw(Canvas canvas)
	{
		
		
		canvas.save();
		int x = (int) (mScreenSize.x / 2 - mHalf.x + mMoveOffset.x / mScale);
		int y = (int) (mScreenSize.y / 2 - mHalf.y + mMoveOffset.y / mScale);
		if (!mMouse)
		{
			canvas.scale(mScale, mScale, mScreenSize.x / 2, mScreenSize.y / 2);
			canvas.drawBitmap(mMap1, x, y, mMapPaint);
		}
		else
		{
			canvas.scale(mScale, mScale, mScreenSize.x / 2, mScreenSize.y / 2);
			canvas.scale(10, 10, x, y);
			canvas.drawBitmap(mUndetailedMap1, x, y, mMapPaint);
			canvas.scale(0.1f, 0.1f, x, y);
		}
		
		for (Geopoint gp : mPoints)
		{
			float cx = x + mMap1.getWidth() * gp.x;
			float cy = y + mMap1.getHeight() * gp.y;
			
			
			mCirclePaint.setStyle(Style.FILL);
			if (gp != mCurrent)
				mCirclePaint.setColor(0xa06495ed);
			else
				mCirclePaint.setColor(0xa0ff95ed);
			canvas.drawCircle(cx, cy, 15, mCirclePaint);
			
			mCirclePaint.setColor(0x40ffffff);
			canvas.drawCircle(cx, cy, 45, mCirclePaint);
			
			if (mShowRadius)
			{
				if (gp != mCurrent)
					mCirclePaint.setColor(0x406495ed);
				else
					mCirclePaint.setColor(0x40ff95ed);
				canvas.drawCircle(cx, cy, 100, mCirclePaint);
	
				mCirclePaint.setStyle(Style.STROKE);
				mCirclePaint.setStrokeWidth(5);
				mCirclePaint.setColor(0xff6495ed);
				canvas.drawCircle(cx, cy, 45, mCirclePaint);
				
				canvas.drawText(""+gp.getLastDistance(), cx, cy, mMapPaint);
			}
		}
		
		canvas.restore();
		if (mCurrent != null)
		{
			canvas.drawText("Distance: " + mDistance, 10, mScreenSize.y - 50, mMapPaint);
		}
	}

	
	int mDeltaX;
	int mDeltaY;
	@Override
	public boolean onTouchEvent(MotionEvent event)
	{
		int x = (int) event.getX();
		int y = (int) event.getY();
		int action = event.getAction(); 
        switch (action) 
        {
       	case MotionEvent.ACTION_DOWN:
       		mDeltaX = x;
       		mDeltaY = y;
       		mMouse = true;
       		break;
       	case MotionEvent.ACTION_MOVE:
       		mMoveOffset.x += x - mDeltaX;
       		mMoveOffset.y += y - mDeltaY;
       		mDeltaX = x;
    		mDeltaY = y;
    		
            invalidate();
       		break;
       	case MotionEvent.ACTION_UP:
       		mMouse = false;
            invalidate();
       		break;
        }
        
		return true;
	}
	
	@Override
	protected void onSizeChanged(int w, int h, int oldw, int oldh)
	{
		WindowManager wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
	    Display display = wm.getDefaultDisplay();
	    if(Build.VERSION.SDK_INT > 12)
	        display.getSize(mScreenSize);
	    else
	    {
	    	mScreenSize.x = display.getWidth();
	    	mScreenSize.y = display.getHeight();
	    }
	    Log.d("ScreenSize", "w: " + getWidth() + " h: " + getHeight());
		
		super.onSizeChanged(w, h, oldw, oldh);
	}
	
	public void zoomIn() 
	{
		if (mScale < 1.8)
		{
			mScale += 0.1;
			invalidate();
		}
	}
	
	public void zoomOut() 
	{
		if (mScale > 0.2)
		{
			mScale -= 0.1;
			invalidate();
		}
	}
	
	public void setShowRadius(boolean show)
	{
		mShowRadius = show;
		invalidate();
	}

	public void locate(List<ScanResult> list)
	{
		long distance = Long.MAX_VALUE;
		long curr = 0;
		for (Geopoint p : mPoints)
		{
			curr = p.getDistance(list);
			if (curr < distance)
			{
				distance = curr;
				mCurrent = p;
				mDistance = distance;
			}
		}
		invalidate();
	}
}
